#include "FFplayerQt.h"
#include "TarsThreadPool.h"
#include <QDebug>

FFplayerQt::FFplayerQt() :
    isAbort(true)
{

}

FFplayerQt::~FFplayerQt()
{
    //    abort();
}

void FFplayerQt::play(QString path)
{
    // 保存文件名
    if(fileName == path || path.isEmpty()) {
        // 播放相同 或着为空
        return;
    }
    // 开始播放
    if(player.play(path.toStdString().c_str())){
        emit sendEvent(FF_PLAY);
    }
}

//////////////////todo 考虑使用线程的方式，处理(UI -> player)事件////////////////
//void FFplayerQt::pushEvent(FFplayerQt::PlayerEvent event)
//{
//    lock_guard<mutex> lock(_mutex);
//    _queue.push(event);
//    _condition.notify_all();
//}

//bool FFplayerQt::getEvent(FFplayerQt::PlayerEvent &event)
//{
//    unique_lock<mutex> lock(_mutex);
//    if(_queue.empty())
//    {
//        _condition.wait(lock, [this]{ return isAbort || not _queue.empty(); });
//    }

//    if(isAbort)
//        return false;

//    if(not _queue.empty())
//    {
//        event = move(_queue.front());
//        _queue.pop();
//        return true;
//    }

//    return false;
//}

//void FFplayerQt::start()
//{
//    isAbort = false;
//    TarsThreadPool::getInstance().exec(bind(&FFplayerQt::eventLoop, this));
//}

//void FFplayerQt::abort()
//{
//    if(isAbort)
//        return;
//    unique_lock<mutex> lock(_mutex);
//    isAbort = true;
//    _condition.notify_all();
//}

//void FFplayerQt::eventLoop()
//{
//    PlayerEvent event;
//    while(true)
//    {
//        // 请求退出
//        if(isAbort)
//            break;

//        // 获取事件
//        if(getEvent(event))
//        {
//        }
//    }
//}
